package com.itheima.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.springframework.stereotype.Component;

/**
 * Author: Zheng
 * Date:   2024/1/27  16:12
 * Package：com.itheima.aspect
 * Description：
 * Version：1.0
 */
@Slf4j
//@Aspect //声明这是一个切面类（特殊方法类）
@Component //交给IOC容器管理
public class DemoAspect {


    @Around("execution(* com.itheima.service.*.*(..))")
    public Object recordTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {

        //获取方法运行开始时间
        long begin = System.currentTimeMillis();
        log.info("方法开始运行------>>");

        Object proceed = proceedingJoinPoint.proceed();

        //获取方法执行结束时间
        long end = System.currentTimeMillis();
        log.info("方法运行结束-------->");

        System.out.println(proceedingJoinPoint.getSignature()+"方法---->执行总耗时："+(end-begin)+"ms");
        return proceed;
    }
}
